51单片机的储存空间

三个逻辑空间、四个物理空间
(1)片内数据存储器(2)片内程序存储器
(3)片外数据存储器(4)片外程序存储器

一、RAM 数据空间

Data Memory Space RAM 作为数据储存器
数据空间是单片机中用于存储变量、临时数据和堆栈信息的区域

graph LR
RAM --> 片内 & 片外
片内 --> 1[低128字节]  &  2[高128字节]
1 --> 11["工作寄存器区00H~1FH"] & 12["位寻址区20H~2FH"] & 13["用户RAM区30H~7FH"]
2 -->21["特殊功能寄存器SFR 80H~FFH"]

1.1 片内 RAM

51 单片机的内部 RAM 分为几个不同的区域,每个区域都有特定的用途和地址范围:

低 128 字节
  1. 寄存器组(Register Banks)
    通用工作寄存器区

    • 地址范围:00H - 1FH
    • 包含 4 个 8 位通用寄存器组(R0-R7),
      每个寄存器组占用 8 个字节,共计 32 个字节。
    • 寄存器组可以通过 RS0 和 RS1 位在 PSEN(程序状态字寄存器中的位 2)和 PSW(程序状态字寄存器)中的位 0 和位 1 来选择。
  2. 位地址区域(Bit Addressable Area)
    可位寻址 RAM 区

    • 地址范围:20H - 2FH
    • 包含 128 位的可位寻址区域,每个位占用一个地址,用于位操作指令。
  3. 变量存储区域(General Purpose RAM)
    通用 RAM 区

    • 地址范围:30H - 7FH
    • 用于存储程序中的变量和临时数据。
高 128 字节

控制具体硬件的工作,有特殊的功能。具体见:特殊功能寄存器

freecompress-8051储存空间.png

1.2 片外 RAM

DPTR 数据指针:用于片外数据存储器地址的指针,一般当为间接寻址寄存器使用,指向外部地址
64KB 16 位字节 216,可拆分为两个八位的独立寄存器 DPL DPH

MOV DPTR,#0650H   ;设置片外地址指针0650H
MOV R0,#30H    ;片内30H
MOV A,@R0      ; 间接寻址,传30H中数据给累加器A
MOVX @DPTR,A  ;将累加器的值给片外的0650H

外部 RAM 是通过外部接口连接到 51 单片机的内存区域,它可以提供比内部 RAM 更大的存储空间。
外部 RAM 的地址范围取决于具体的硬件设计和连接的内存大小。
通常,外部 RAM 的地址由单片机的地址线直接给出,而数据则通过数据总线进行传输。

二、ROM 程序空间

Program Memory Space ROM 作为程序储存器
程序空间是单片机中用于存储程序代码和常量数据的区域,存放编好的程序和表格常数, 采用 PC 程序计数器寻址。

PC 程序计数器:用于存放下一条要执行的指令地址 64KB
( 16 位字节 216 地址范围0000H~FFFFH
  
编译和烧录过程将汇编代码转换成机器代码,然后这个机器代码被放置到单片机的程序空间里。在 8051 单片机中,程序空间通常是只读的,意味着写入程序空间的数据在单片机上电后是不可更改的。

2.1 片内 ROM

PC 地址指针指向
7 个特殊的存储器单元 8051中断系统
0000H:复位后程序自动运行的首地址
0003H:外部中断 0 入口地址
000BH:定时器 0 溢出中断入口地址
0013H:外部中断 1 入口地址
001BH:定时器 1 溢出中断入口地址
0023H:串行口中断入口地址

2.2 片外 ROM

PC 地址指针指向